<!doctype html>
<html lang="en-us">
<head>

    <meta charset="utf-8">
    <meta name="generator" content="Hugo 0.59.1" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>软件测试考试期末复习 | 林贤钦</title>
    <meta property="og:title" content="软件测试考试期末复习 - 林贤钦">
    <meta property="og:type" content="article">
        
    <meta property="article:published_time" content="2019-12-19T14:36:14&#43;08:00">
        
        
    <meta property="article:modified_time" content="2019-12-19T14:36:14&#43;08:00">
        
    <meta name="Keywords" content="java,博客,项目管理,软件架构,公众号,小程序">
    <meta name="description" content="软件测试考试期末复习">
        
    <meta name="author" content="林贤钦">
    <meta property="og:url" content="http://linxianqin.gitee.io/post/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E8%80%83%E8%AF%95%E6%9C%9F%E6%9C%AB%E5%A4%8D%E4%B9%A0/">
    <link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon">

    <link rel="stylesheet" href="/css/normalize.css">
    
        <link rel="stylesheet" href="/css/prism.css">
    
    <link rel="stylesheet" href="/css/style.css">
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    


    
    
</head>

<body>
<header id="header" class="clearfix">
	<div class="container">
        <div class="col-group">
            <div class="site-name ">
                
                    <a id="logo" href="http://linxianqin.gitee.io">
                        林贤钦
                    </a>
                
                <p class="description">专注于Java、微信小程序、移动互联网、项目管理、软件架构</p>
            </div>
            <div>
                <nav id="nav-menu" class="clearfix">
                    <a class="current" href="http://linxianqin.gitee.io">首页</a>
                    
                    <a  href="http://linxianqin.gitee.io/archives/" title="归档">归档</a>
                    
                    <a  href="http://linxianqin.gitee.io/about/" title="关于">关于</a>
                    
                </nav>
            </div>
        </div>
    </div>
</header>


<div id="body">
        
        
    <div class="container">
        <div class="col-group">

            <div class="col-8" id="main">
                <div class="res-cons">
                    <article class="post">
                        <header>
                            <h1 class="post-title">软件测试考试期末复习</h1>
                        </header>
                        <date class="post-meta meta-date">
                            2019年12月19日
                        </date>
                        
                        <div class="post-meta">
                            <span>|</span>
                            
                                <span class="meta-category"><a href="http://linxianqin.gitee.io/categories/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95">软件测试</a></span>
                            
                        </div>
                        
                        
                        <div class="post-meta">
                            <span id="busuanzi_container_page_pv">|<span id="busuanzi_value_page_pv"></span><span> 阅读</span></span>
                        </div>
                        
                        
                        <div class="post-content">
							<nav id="TableOfContents">
<ul>
<li><a href="#软件测试考试期末复习">软件测试考试期末复习</a>
<ul>
<li><a href="#第一章-重点">第一章（重点）</a>
<ul>
<li>
<ul>
<li><a href="#1-软件测试目的及重要性">1. 软件测试目的及重要性</a></li>
<li><a href="#2-软件测试学科发张-正反">2. 软件测试学科发张（正反）</a></li>
<li><a href="#3-测试与开发的关系-v模型">3. 测试与开发的关系（v模型）</a></li>
<li><a href="#4-tdd思想">4. TDD思想</a></li>
</ul></li>
</ul></li>
<li><a href="#第二章-重点">第二章（重点）</a>
<ul>
<li>
<ul>
<li><a href="#1-软件质量-模型">1.软件质量   &mdash;&ndash;&gt;模型</a></li>
<li><a href="#2-软件缺陷-定义-产生原因">2.软件缺陷   &mdash;&ndash;&gt;定义、产生原因</a></li>
<li><a href="#3-软件测试的分类">3.软件测试的分类</a>
<ul>
<li><a href="#什么是黑盒测试和白盒测试-它们各自的局限性是什么">什么是黑盒测试和白盒测试，它们各自的局限性是什么。</a></li>
</ul></li>
<li><a href="#4-测试用例-定义-作用">4.测试用例 &mdash;&gt;定义、作用</a></li>
<li><a href="#5-优秀测试工程师应具备的素质-不出论述题">5.优秀测试工程师应具备的素质（不出论述题）</a></li>
</ul></li>
</ul></li>
<li><a href="#第三章-重点">第三章（重点）</a>
<ul>
<li>
<ul>
<li><a href="#1-黑盒">1. 黑盒</a>
<ul>
<li><a href="#1-1-错误推测法">1.1 错误推测法</a></li>
<li><a href="#1-2-等价类划分法">1.2 等价类划分法</a></li>
<li><a href="#1-3-边界值分析法">1.3 边界值分析法</a></li>
<li><a href="#1-4-判定表方法">1.4 判定表方法</a></li>
<li><a href="#1-5-因果图法">1.5 因果图法</a></li>
<li><a href="#1-6-正交试验法">1.6 正交试验法</a></li>
</ul></li>
<li><a href="#2-白盒">2. 白盒</a>
<ul>
<li><a href="#2-1-判定覆盖">2.1 判定覆盖</a></li>
<li><a href="#2-2-条件覆盖">2.2 条件覆盖</a></li>
<li><a href="#2-3-判定条件覆盖">2.3 判定条件覆盖</a></li>
<li><a href="#2-3-判定组合覆盖">2.3 判定组合覆盖</a></li>
<li><a href="#2-5-基本路径覆盖">2.5 基本路径覆盖</a></li>
</ul></li>
</ul></li>
</ul></li>
<li><a href="#第五章">第五章</a>
<ul>
<li>
<ul>
<li><a href="#1-单元测试-定义-目的-方法-依据">1. 单元测试 &mdash;&ndash;&gt;定义、目的、方法、依据</a></li>
<li><a href="#2-编码的规范-标准-原因">2. 编码的规范、标准、原因</a></li>
<li><a href="#3-桩-驱动">3. 桩、驱动</a></li>
<li><a href="#4-集成模式-自底向上-自顶向下-优缺点">4. 集成模式 、自底向上、自顶向下 （优缺点）</a>
<ul>
<li><a href="#4-1-非渐增式测试模式">4.1 非渐增式测试模式</a></li>
<li><a href="#4-2-渐增式测试模式">4.2 渐增式测试模式</a></li>
<li><a href="#4-3-自顶向下测试">4.3 自顶向下测试</a></li>
<li><a href="#4-4-自底向上测试方法">4.4 自底向上测试方法</a></li>
<li><a href="#4-5-各自优缺点">4.5 各自优缺点：</a></li>
</ul></li>
</ul></li>
</ul></li>
<li><a href="#第六章-重点">第六章 （重点）</a>
<ul>
<li>
<ul>
<li><a href="#1-功能测试-内容">1. 功能测试 &mdash;-&gt;内容</a></li>
<li><a href="#2-回归测试-定义">2. 回归测试 &mdash;-&gt; 定义</a></li>
<li><a href="#3-性能测试-定义-内容-压力-容量-可靠性-容错性-工具-jmeter-lr">3. 性能测试&mdash;-&gt;定义 、内容(压力、容量、可靠性、容错性)、工具(JMeter、LR)</a></li>
<li><a href="#4-安全性测试">4. 安全性测试</a></li>
<li><a href="#5-兼容性测试-数据-软件-硬件-配置">5. 兼容性测试 &mdash;-&gt;数据、软件、硬件（配置)</a></li>
</ul></li>
</ul></li>
<li><a href="#第七章">第七章</a>
<ul>
<li>
<ul>
<li><a href="#1-定义-用户">1. 定义(用户)</a></li>
<li><a href="#2-α测试-β测试">2. α测试，β测试</a></li>
<li><a href="#3-易用性测试-7要素">3. 易用性测试 (7要素)</a></li>
</ul></li>
</ul></li>
<li><a href="#第八章">第八章</a>
<ul>
<li>
<ul>
<li><a href="#软件本地化-国际化-了解">软件本地化、国际化(了解)</a></li>
</ul></li>
</ul></li>
<li><a href="#第九章">第九章</a>
<ul>
<li>
<ul>
<li><a href="#1-自动化测试原理">1. 自动化测试原理</a></li>
<li><a href="#2-自动化测试工具">2. 自动化测试工具</a></li>
<li><a href="#3-自动化-优点-局限性">3. 自动化 优点、局限性</a></li>
</ul></li>
</ul></li>
<li><a href="#第十章-有个在综合题">第十章（有个在综合题)</a>
<ul>
<li>
<ul>
<li><a href="#测试计划所涉及到的工作">测试计划所涉及到的工作：</a></li>
</ul></li>
</ul></li>
<li><a href="#第十一章">第十一章</a>
<ul>
<li>
<ul>
<li><a href="#1-测试用例的定义">1. 测试用例的定义</a></li>
<li><a href="#2-重要性-作用">2. 重要性&mdash;&gt;作用</a></li>
</ul></li>
</ul></li>
<li><a href="#第十二章">第十二章</a>
<ul>
<li>
<ul>
<li><a href="#1-测试环境的分类">1. 测试环境的分类</a></li>
<li><a href="#2-测试环境的五要素">2. 测试环境的五要素</a></li>
</ul></li>
</ul></li>
<li><a href="#第十三章">第十三章</a>
<ul>
<li>
<ul>
<li><a href="#1-bug-定义">1. bug 定义</a></li>
<li><a href="#2-bug-生命周期">2. bug 生命周期</a></li>
<li><a href="#3-bug-等级">3. bug 等级</a></li>
<li><a href="#4-bug测试与调试">4. bug测试与调试</a></li>
<li><a href="#5-bug-趋势">5. bug 趋势</a></li>
</ul></li>
</ul></li>
</ul></li>
</ul>
</nav>
                            

<h1 id="软件测试考试期末复习">软件测试考试期末复习</h1>

<ol>
<li>分数：

<ol>
<li>单选 1*20</li>
<li>多选 3*10</li>
<li>判断 1*10</li>
<li>填空 1*10</li>
<li>论述 15*2</li>
</ol></li>
</ol>

<h2 id="第一章-重点">第一章（重点）</h2>

<h4 id="1-软件测试目的及重要性">1. 软件测试目的及重要性</h4>

<p>目的：</p>

<pre><code>1、发现被测对象与用户需求之间的差异，即缺陷。
2、通过测试活动发现并解决缺陷，增加人们对软件质量的信心。
3、通过测试活动了解被测对象的质量状况，为决策提供数据依据。
4、通过测试活动积累经验，预防缺陷出现，降低产品失败风险。
</code></pre>

<p>重要性：</p>

<pre><code>为了保证软件质量
</code></pre>

<p>软件测试的生命周期:</p>

<pre><code>测试计划---&gt;测试设计---&gt;测试执行---&gt;缺陷跟踪---&gt;测试评估
</code></pre>

<h4 id="2-软件测试学科发张-正反">2. 软件测试学科发张（正反）</h4>

<p>1972年，软件测试领域的先驱BILL Hetzel博士（代表论著《软件测试完全指南》），
在美国的北卡罗来纳大学组织了历史上第一次正式的关于软件测试的会议。</p>

<pre><code>观点：软件测试就是一系列活动，这些活动是为了评估一个程序或软件系统的特性或能力，
并确定其是否达到了预期结果。
（1）测试是试图验证软件是工作的，也就是验证软件功能执行的正确性。
（2）测试的目的是验证软件是否符合事先定义的要求。
（3）测试的活动是以人们的设想或预期的结果为依据。这里的设想或预期的结果指需求定义，软件设计的结果。
存在问题：
（1）可能使软件测试的活动效率降低
（2）甚至缺乏有效的方法进行测试活动。
</code></pre>

<p>Myers（代表论著《软件测试的艺术》）认为不应该着眼于验证软件是工作的，
相反，应该用逆向思维去发现尽可能多的错误。</p>

<pre><code>观点:测试是为了发现错误而执行的一个程序或者系统的过程。
一个成功的测试必须是发现了软件问题的测试否则测试就没有价值。这个定义引导人们证明软件
是不工作的，以反向思维方式，不断思考开发人员理解的误区，不良的习惯，程序代码的边界，
无效数据的输入以及系统的弱点，试图破坏系统摧毁系统，摧毁系统，目标就是发现系统中各式各样的问题。
存在问题：
（1）如果只强调测试的目的是寻找错误，就可能是测试人员容易忽视软件产品的某些基本需求
    或者客户的实际需求，测试活动可能会存在一定的随意性和盲目性。
（2）如果只强调测试的目的是寻找错误，使开发人员容易产生一个错误的印象，认为测试人员
    的工作就是挑毛病的。
（3）除此之外还强调测试是执行一个程序或者系统的过程，也就是说测试活动是在代码完成之
    后进行，而不是贯穿整个软件开发过程的活动，及软件测试不包括软件需求评审，软件设
    计评审和软件代码静态检查等一系列活动，从而使软件测试的定义具有局面性和片面性。
</code></pre>

<p>总结：这正反两方面的观点是从不同的角度看问题，一方面通过测试来保证质量，
另一方面又要改进测试方法和提高软件测试的效率，两者相辅相成。软件测试就是
在这两者之间获得平衡，但对于不同的应用领域，二者的比重不一样。</p>

<h4 id="3-测试与开发的关系-v模型">3. 测试与开发的关系（v模型）</h4>

<pre><code>V模型 ：能准确反映出开发活动和测试活动之间的关系，说明：
1）测试活动与开发活动同时启动；
2）每个开发活动都有相应级别的测试类型相对应。
3）测试是分层的。只有完成单元测试、集成测试、系统测试、验收测试4个层次的测试，才是对软件产品的完整测试。
</code></pre>

<p>v模型呈现测试和开发</p>

<pre><code>                                      用户需求验证
需求分析和定义 ⚪&lt;--------------------------------------------------&gt;⚪ 验收测试
         
                                    系统非功能特征验证
              系统设计  ⚪&lt;------------------------------------&gt;⚪ 系统非功能性测试

                                       功能验证
                  详细功能设计 ⚪&lt;--------------------&gt;⚪ 功能测试

                                       代码验证
                              编码  ⚪&lt;-------&gt;⚪ 单元测试

															
                                         ⚪
</code></pre>

<h4 id="4-tdd思想">4. TDD思想</h4>

<pre><code>TDD概念： 测试在前，编码在后的开发方法。  
</code></pre>

<p>TDD具体实施过程</p>

<pre><code>开始 ➡➡➡ 为新性能写一个测试  ➡➡ 编译 ➡➡ 修订编译错误
                    ↗                           ↘   
                 ↗                                 ↘
          如果需要重构                          运行测试并发现错误
                 ↖                                  ↙    
                    ↖                            ↙       
                     运行测试并通过 ⬅⬅⬅⬅ 编写代码
</code></pre>

<h2 id="第二章-重点">第二章（重点）</h2>

<h4 id="1-软件质量-模型">1.软件质量   &mdash;&ndash;&gt;模型</h4>

<pre><code>软件质量定义：软件产品满足规定的和隐含的与需求能力有关的全部特征和特性。
1、软件产品质量满足用户要求的程度
2、软件各种属性的组合程度
3、用户对软件产品的综合反映程度
4、软件在使用过程中满足用户要求的程度 
</code></pre>

<p>2、ISO9126三层质量模型，被国内和国际标准采用。</p>

<pre><code>Iso9126模型：
高层：软件质量需求评价标准（SQRC）属性：功能性、可靠性、可用性、效率、可移植性、可维护性
中层：软件质量设计标准（SQDC） 属性： 安全性、成熟性、可理解性、时间表现、可分析性、适应性
低层：软件质量度量标准（SQMC）
</code></pre>

<h4 id="2-软件缺陷-定义-产生原因">2.软件缺陷   &mdash;&ndash;&gt;定义、产生原因</h4>

<pre><code>软件缺陷定义：是指计算机系统或者程序中存在的任何一种破坏正常运行能力的问题、错误，或者隐藏的功能缺陷、瑕疵，
             其结果会导致软件产品在某种程度上不能满足用户的需求。
表现形式：
1、运行出错，包括   运行中断、系统崩溃、界面混乱
2、数据计算错误，导致结果不正确
3、功能、特性没有实现或部分实现
4、在某种特点条件下没能给出正确或准确的结果
5、计算的结果没有满足所需要的精度
6、用户界面不美观
7、需求规格说明书的问题
8、设计不合理，存在缺陷
9、实际结果与预期结果不一致
10、用户不能接收的其他问题  
</code></pre>

<p>产生原因：</p>

<pre><code>1、技术问题  2、软件本身  3、团队工作
</code></pre>

<h4 id="3-软件测试的分类">3.软件测试的分类</h4>

<p>软件测试的分类：按阶段、按目标、按方法。</p>

<pre><code>目的分类：集成测试、功能测试、回归测试、性能测试、可靠性测试、安全测试、兼容性测试
阶段分类：需求评审、设计评审、单元测试、集成测试、系统测试、验收测试、α测试、β测试
方法分类：静态测试、动态测试、黑盒测试、白盒测试
</code></pre>

<p>-静态测试和动态测试、黑盒测试和白盒测试的划分原则</p>

<pre><code>根据测试过程中被测软件是否被执行，软件测试可分为静态测试和动态测试。
根据是否针对系统的内部结构和具体实现算法来完成测试，软件测试可分为白盒和黑盒
</code></pre>

<p>-非功能测试：性能测试、可靠性测试、安全性测试，及常见非功能缺陷</p>

<pre><code>性能测试：测试系统在不同负载条件下的系统具体的性能指标
可靠性测试：检验系统能否保持长期稳定，正常的运行，如确定系统平均故障间隔时间，包括强壮性测试和异常处理测试。
安全性测试测试系统在应对非授权的内外部访问，有意攻击时的系统防护能力。
</code></pre>

<h5 id="什么是黑盒测试和白盒测试-它们各自的局限性是什么">什么是黑盒测试和白盒测试，它们各自的局限性是什么。</h5>

<pre><code>黑盒测试：不关注软件内部结构，着眼于程序外部用户界面，关注软件的输入和输出，关注用户的需求，
         从用户的角度验证软件的功能，实现端到端的测试。 
    缺陷：
        1、是否不正确或遗漏了功能
        2、能否正确地接收输入数据，能否产生正确的输出信息
        3、功能操作逻辑不合理
        4、界面是否出错、是否不美观
        5、安装过程中出现问题，安装步骤不清晰、不够方便灵活
        6、系统初始化问题
白盒测试：按照程序内部的结构测试程序，测试程序内部的变量状态、逻辑结构、运行路径等 
    缺陷：试图列举所有路径测试，是不可能的，企图遍历所有的路径是很难做到的，
         即使每条路径都测试了，覆盖率得到100%，程序也可能出错。
</code></pre>

<p>单元测试、集成测试、系统测试、验收测试，它们的概念与不同</p>

<table>
<thead>
<tr>
<th><em>类别</em></th>
<th><em>对象</em></th>
<th><em>目的</em></th>
<th><em>测试依据</em></th>
<th><em>测试方法</em></th>
</tr>
</thead>

<tbody>
<tr>
<td>单元测试</td>
<td>模块内部程序</td>
<td>消除局部模块逻辑和功能上的错误和缺陷</td>
<td>详细设计文档API说明</td>
<td>白盒测试</td>
</tr>

<tr>
<td>集成测试</td>
<td>模块间的接口和调用关系</td>
<td>找出与软件设计相关的程序结构，模块调用关系、接口方面的问题</td>
<td>概要设计文档接口设计说明</td>
<td>灰盒测试</td>
</tr>

<tr>
<td>系统测试</td>
<td>整个系统，包括系统软硬件等</td>
<td>对整个系统进行一系列的功能、非功能测试，发现功能或非功能问题。</td>
<td>系统需求规格说明文档</td>
<td>黑盒测试</td>
</tr>

<tr>
<td>验收系统</td>
<td>个系统，包括系统软硬件等，采用真实用户环境</td>
<td>对整个系统按用户环境和用户使用场景进行一系列整体的解决方案级测试, 确认系统与用户需求的匹配程度</td>
<td>对整个系统按用户环境和用户使用场景进行一系列整体的解决方案级测试, 确认系统与用户需求的匹配程度</td>
<td>黑盒测试</td>
</tr>
</tbody>
</table>

<hr />

<h4 id="4-测试用例-定义-作用">4.测试用例 &mdash;&gt;定义、作用</h4>

<p>定义：</p>

<pre><code>为了测试特定的测试目的而设计的测试条件、测试数据及与之相关的测试流程的一个特定的使用实例或场景。
也可以称作有效地发现软件缺陷的最小测试执行单位。
</code></pre>

<p>作用：</p>

<pre><code>1、测试用例是测试人员在测试过程中的重要考察依据。
2、测试用例可以帮助实施有效的测试，所有被执行的测试都是有意义的，不要执行毫无意义的测试操作。
3、良好的测试用例不断地被重复使用。
4、测试用例是一个知识积累的过程。
</code></pre>

<h4 id="5-优秀测试工程师应具备的素质-不出论述题">5.优秀测试工程师应具备的素质（不出论述题）</h4>

<pre><code>1、责任感   2、沟通能力  3、技术能力  4、自信心  5、耐心 
6、怀疑精神  7、适度的好奇心  8、洞察力  9、反向思维和发散的思维能力  10、记忆力 
</code></pre>

<h2 id="第三章-重点">第三章（重点）</h2>

<h4 id="1-黑盒">1. 黑盒</h4>

<h5 id="1-1-错误推测法">1.1 错误推测法</h5>

<pre><code>思想：列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。
</code></pre>

<h5 id="1-2-等价类划分法">1.2 等价类划分法</h5>

<pre><code>思想：基于对输入或输出情况的评估，然后划分成两个或更多子集来进行测试的一种方法，即它将所有可能的输入数据划分成若干个等价类。
</code></pre>

<p>有效等价类</p>

<pre><code>有效等价类是指输入完全满足程序输入的规格说明、有意义的输入数据构成的集合，
利用有效等价类可以检验程序是否满足规格说明所规定的功能和性能。
</code></pre>

<p>无效等价类</p>

<pre><code>无效等价类和有效等价类相反，即不满足程序输入要求或者无效的输入数据构成的集合。
使用无效等价类，可以测试程序/系统的容错性---对异常输入情况的处理。
</code></pre>

<h5 id="1-3-边界值分析法">1.3 边界值分析法</h5>

<pre><code>在某个输入输出变量范围的边界上，验证系统功能是否正常运行的测试方法。
</code></pre>

<h5 id="1-4-判定表方法">1.4 判定表方法</h5>

<pre><code>直接针对多种输入条件的组合，不需要考虑结果，即直接采用判定表方法。。
判定表由“条件和活动”组成，条件是所有的条件组合，测试活动则考虑每一个选择；
涉及概念
条件桩：列出问题所有条件。
动作桩：列出可能针对问题所采取的操作。
条件项：针对所列条件赋真、假值。
动作项：列出条件项赋值条件下动作的相应选择。
规则：条件组合及相应的操作，对应判定表的一列。
</code></pre>

<h5 id="1-5-因果图法">1.5 因果图法</h5>

<pre><code>因果图法借助图形，着重分析输入条件的各种组合，每种组合条件就是因，它必然有一个输出的结果，这就是果。

其中 ∧ 表示 “与” ，v 表示 “或” ，∽ 表示 “非”的关系
</code></pre>

<h5 id="1-6-正交试验法">1.6 正交试验法</h5>

<pre><code>依据理论，从大量的(实验)数据中挑选适量的、有代表性的点(条件组合),从合理地安排实验的一种科学实验设计方法
</code></pre>

<p><code>因子：影响测试结果的条件因素</code></p>

<p><code>状态：各个因子的取值(每个条件的可能取值)</code></p>

<p><code>水平数：状态数(每个条件的可能取值的个数)</code></p>

<p><code>计算公式：行数=因素数*(最大水平数-1)+1</code></p>

<h4 id="2-白盒">2. 白盒</h4>

<h5 id="2-1-判定覆盖">2.1 判定覆盖</h5>

<pre><code>思想：设计若干用例，运行被测程序，使得程序中的每个判断的取真分支和取假值均曾被满足。
</code></pre>

<h5 id="2-2-条件覆盖">2.2 条件覆盖</h5>

<pre><code>思想：设计若干用例，执行被测程序以后，要使每个判断中的每个条件的可能值至少满足一次。
</code></pre>

<h5 id="2-3-判定条件覆盖">2.3 判定条件覆盖</h5>

<pre><code>思想：将两种方法结合起来的一种设计方法，它是判定和条件覆盖设计的交集。
</code></pre>

<h5 id="2-3-判定组合覆盖">2.3 判定组合覆盖</h5>

<pre><code>思想：设计足够的测试用例，使得判断中的每个条件的所有可能至少出现一次，并且每个判断本身的判定结果也至少出现一次。
</code></pre>

<h5 id="2-5-基本路径覆盖">2.5 基本路径覆盖</h5>

<pre><code>思想：设计所有的测试用例，来覆盖程序中的所有可能，独立的执行路径。
</code></pre>

<p>例题：</p>

<pre><code>If (A&gt;0 &amp;&amp; B&gt;0) then
  c = c/a
If (A&gt;1|| c&gt;1) then
  c = c+1
</code></pre>

<p>程序控制流图</p>

<pre><code>                ⬇a
          ┌─────┴───────┐    T
          | A&gt;0 And b&gt;0 |───────┐
          └─────┬───────┘     c │
            F   │          ┌────┴────┐
                │          | c = c/a |  
                │ b        └────┬────┘ 
                │               |
                ├───────────────┘
                │
                │
          ┌─────┴───────┐    T
          | A&gt;1 OR c&gt;1  |───────┐
          └─────┬───────┘     e |
            F   │          ┌────┴────┐
                │          | c = c+1 |  
                │ d        └────┬────┘  
                │               |
                ├───────────────┘
                │
                │
            ┌───┴─────┐
            | c = b+c |
            └─────────┘  
</code></pre>

<table>
    <tr>
        <th>覆盖方法</th>
        <th>测试用例A，B，C</th>
        <th>取值条件</th>
        <th>具体取值条件</th>
        <th>执行路径</th>  
    </tr>
    <tr >
        <td rowspan="2">判定覆盖</td>
        <td>2，1，2</td>
        <td>T1, T2, T3, T4</td>
        <td>A>0, b>0, A>1, c>1</td>
        <td>ace</td>
    </tr>
    <tr>
        <td>-1，-2，-3</td>
        <td>F1, F2, F3, F4</td>
        <td>A≤0, b≤0, A≤1, c≤1</td>
        <td>abd</td>
    </tr>
    <tr >
        <td rowspan="2">条件覆盖</td>
        <td>2，-1，-2</td>
        <td>T1, F2, T3, F4</td>
        <td>A>0, b≤0, A>1, c≤1</td>
        <td>abe</td>
    </tr>
    <tr>
        <td>-1，2，3</td>
        <td>F1, T2, F3, T4</td>
        <td>A≤0, b>0, A≤1, c>1</td>
        <td>abe</td>
    </tr>
    <tr >
        <td rowspan="2">判定条件覆盖</td>
        <td>2，1，2</td>
        <td>T1, T2, T3, T4</td>
        <td>A>0, b>0, A>1, c>1</td>
        <td>ace</td>
    </tr>
    <tr>
        <td>-1，-2，-3</td>
        <td>F1, F2, F3, F4</td>
        <td>A≤0, b≤0, A≤1, c≤1</td>
        <td>abd</td>
    </tr>
    <tr >
        <td rowspan="4">条件组合覆盖</td>
        <td>2，1，2</td>
        <td>T1, T2, T3, T4</td>
        <td>A>0, b>0, A>1, c>1</td>
        <td>ace</td>
    </tr>
    <tr>
        <td>2，-2，-3</td>
        <td>T1, F2, T3, F4</td>
        <td>A>0, b≤0, A>1, c≤1</td>
        <td>abe</td>
    </tr>
    <tr>
        <td>-1，1，2</td>
        <td>F1, T2, F3, T4</td>
        <td>A≤0, b>0, A≤1, c>1</td>
        <td>abe</td>
    </tr>
    <tr>
        <td>-1，-2，-3</td>
        <td>F1, F2, F3, F4</td>
        <td>A≤0, b≤0, A≤1, c≤1</td>
        <td>abd</td>
    </tr>
    <tr>
        <td rowspan="4">路径覆盖</td>
        <td>2，1，2</td>
        <td>T1, T2, T3, T4</td>
        <td>A>0, b>0, A>1, c>1</td>
        <td>ace(L1)</td>
    </tr>
    <tr>
        <td>-1，-2，-3</td>
        <td>F1, F2, F3, F4</td>
        <td>A≤0, b≤0, A≤1, c≤1</td>
        <td>abd(L2)</td>
    </tr>
    <tr>
        <td>2，-1，-2</td>
        <td>T1, F2, T3, F4</td>
        <td>A>0, b≤0, A>1, c≤1</td>
        <td>abe(L3)</td>
    </tr>
    <tr>
        <td>1，2，0</td>
        <td>T1, T2, F3, F4</td>
        <td>A>0, b>0, A≤1, c≤1</td>
        <td>acd(L4)</td>
    </tr>
</table>

<hr />

<h2 id="第五章">第五章</h2>

<h4 id="1-单元测试-定义-目的-方法-依据">1. 单元测试 &mdash;&ndash;&gt;定义、目的、方法、依据</h4>

<pre><code>定义：是对软件组成单元进行的测试，而且软件单元是在与程序的其他部分相隔离的情况下进行独立的测试
目的：消除局部模块逻辑和功能上的错误和缺陷。
方法：采用白盒测试   
依据：模块的详细设计
</code></pre>

<h4 id="2-编码的规范-标准-原因">2. 编码的规范、标准、原因</h4>

<pre><code>规范：建议如何去做，推荐更好的工作方式
标注：建立起来和必须遵守的规则
原因：1、可靠性  2、 可读性和可维护性  3、移植性
</code></pre>

<h4 id="3-桩-驱动">3. 桩、驱动</h4>

<pre><code>驱动：驱动程序，驱动模块，用于模拟被测模块的上级模块，能够调用被测模块，并在测试过程中，
     驱动模块接受测试数据，调用被测模块并把相关的数据传送给被测模块
桩：桩程序，桩模块，用于模拟被测模块工作过程中所调用的下层模块。
</code></pre>

<h4 id="4-集成模式-自底向上-自顶向下-优缺点">4. 集成模式 、自底向上、自顶向下 （优缺点）</h4>

<h5 id="4-1-非渐增式测试模式">4.1 非渐增式测试模式</h5>

<pre><code>定义：先分别测试每个模块，再把所有模块按设计要求放在一起结合成所要求的程序，如大棒模式
</code></pre>

<h5 id="4-2-渐增式测试模式">4.2 渐增式测试模式</h5>

<pre><code>定义：把下一个要测试的模块同已经测试好的模块结合起来进行测试，测试完再把下一个应该测试的模块结合进来测试
</code></pre>

<h5 id="4-3-自顶向下测试">4.3 自顶向下测试</h5>

<pre><code>目的：从顶层控制（主控模块）开始，采用同设计顺序一样的思路对被测系统进行测试，来验证系统的稳定性。
定义：自顶向下的集成测试就是按照系统层次结构图，以主程序模块为中心，自上而下按照深度优先或者广度优先策略，
     对各个模块一边组装一边进行测试。
</code></pre>

<h5 id="4-4-自底向上测试方法">4.4 自底向上测试方法</h5>

<pre><code>目的：从依赖性最小的底层模块开始，按照层次结构图，逐层向上集成，验证系统的稳定性。
定义：自底向上集成是从系统层次结构图的最底层模块开始进行组装和集成测试的方式。
     对于某一个层次的特定模块，因为它的子模块（包括子模块的所有下属模块）
     已经组装并测试完成，所以不再需要桩模块。在测试过程中，如果想要从子模块得到信息
     可以通过直接运行子模块得到。也就是说，在集成测试的过程中只需要开发相应的驱动模块就可以了。
</code></pre>

<h5 id="4-5-各自优缺点">4.5 各自优缺点：</h5>

<pre><code>1、渐增式测试模式：需要编写的软件较多，工作量较大，而非渐增式测试模式测试开销小
2、渐增式测试模式：发现模块间接口错误早，而非渐增式测试模式晚
3、渐增式测试模式：测试更彻底
4、渐增式测试模式：需要较多的机器时间
5、非渐增式测试模式：发现错误较难诊断，而使用渐增式测试模式，如果发现错误则往往
               和最近加进来的那个模块有关
6、使用非渐增式测试模式：可以并行测试
7、自顶向下测试方法的主要优点是不需要测试驱动程序，能够在测试阶段的早期实现并验证系统的主要功能，
  而且能在早期发现上层模块的接口错误。
8、自顶向下测试方法的主要缺点是需要存根程序，可能遇到与此相联系的测试困难，低层关键模块中的错误发现较晚，
  而且用这种方法在早期不能充分展开人力。
9、自底向上测试方法的优缺点与上述自顶向下测试方法的优缺点刚好相反
</code></pre>

<h2 id="第六章-重点">第六章 （重点）</h2>

<h4 id="1-功能测试-内容">1. 功能测试 &mdash;-&gt;内容</h4>

<pre><code>定义：根据产品特性、操作描述和用户方案，测试一个产品的特性和可操作行为以确定它们满足设计需求
</code></pre>

<h4 id="2-回归测试-定义">2. 回归测试 &mdash;-&gt; 定义</h4>

<pre><code>定义：是指修改了旧代码后，重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
     自动回归测试将大幅降低系统测试、维护升级等阶段的成本
</code></pre>

<h4 id="3-性能测试-定义-内容-压力-容量-可靠性-容错性-工具-jmeter-lr">3. 性能测试&mdash;-&gt;定义 、内容(压力、容量、可靠性、容错性)、工具(JMeter、LR)</h4>

<pre><code>定义： 通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
目的： 1、验证系统是否能满足到用户提出的性能指标 
      2、发现性能瓶颈，优化系统整体性能
指标：系统资源(CPU、内存等）的使用率和系统行为表现。
</code></pre>

<p>负载测试：</p>

<pre><code>负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标，譬如软件在一定时期内，
最大支持多少并发用户数，软件请求出错率等，测试的主要是软件系统的性能
</code></pre>

<p>压力测试(反常值)：</p>

<pre><code>强度测试也就是压力测试，压力测试主要是为了测试硬件系统是否达到需求文档设计的性能目标，
譬如在一定时期内，系统的cpu利用率，内存使用率，磁盘I/O吞吐率，网络吞吐量等，压力测试
和负载测试最大的差别在于测试目的不同。
</code></pre>

<p>容量测试(正常值)：</p>

<pre><code>确定系统最大承受量，譬如系统最大用户数，最大存储量，最多处理的数据流量等。
</code></pre>

<p>容错性测试：</p>

<pre><code>主要检查系统的容错能力，检查软件在异常条件下的自身是否具有防护性的措施，或者某种灾难性难以恢复的手段
</code></pre>

<p>可靠性测试：</p>

<pre><code>根据软件系统可靠性结构、寿命类型和各单元的可靠性试验信息，利用概率统计方法，评估出系统的可靠性特征量。
是软件系统的固有的特性之一，与软件缺陷有关，也和系统输入和系统有关。
</code></pre>

<h4 id="4-安全性测试">4. 安全性测试</h4>

<pre><code>定义：全面检验软件在需求规格说明书中规定的防止危险状态措施的有效性和在每一个危险状态下的反应
    对软件设计中用于提高安全性的结构、算法、容错、冗余、中断处理等方案进行针对性测试，并对安
    全性关键的软件单元和软件部件，单独进行加强的测试，以确认其满足安全性需求。
目的：
    1、提升IT产品的安全质量；
    2、尽量在发布前找到安全问题予以修补降低成本 ；
    3、度量安全。
    4、验证安装在系统内的保护机制能否在实际应用中对系统进行保护，使之不被非法入侵，不受各种因素的干扰
</code></pre>

<p>两个层次：应用程序级别和系统级别的安全性</p>

<pre><code>应用程序级别
对数据或业务功能的访问
操作者只能访问其所属用户所授权的功能
系统级别
系统的登录或远程访问
核实只有系统和应用程序级别的操作者才有权访问系统
</code></pre>

<h4 id="5-兼容性测试-数据-软件-硬件-配置">5. 兼容性测试 &mdash;-&gt;数据、软件、硬件（配置)</h4>

<pre><code>兼容性测试包括软件兼容性、数据共享兼容性、硬件兼容性三个方面
</code></pre>

<p>向前兼容、向后兼容的含义。</p>

<pre><code>向前兼容指的是可以使用未来版本的软件
向后兼容是指可以使用以前版本的软件   
</code></pre>

<h2 id="第七章">第七章</h2>

<h4 id="1-定义-用户">1. 定义(用户)</h4>

<pre><code>验收测试的定义：按照软件任务书或合同，供需双方约定的验收依据进行测试，决定是否接收
用户验收测试：在软件开发中，用户验收测试（UAT，user acceptance testing）－也叫作beta测试，
    应用程序测试和终端用户（end user）测试是软件开发的一个阶段，该阶段中软件在“真实环境”中由特定的用户进行测试。
</code></pre>

<h4 id="2-α测试-β测试">2. α测试，β测试</h4>

<pre><code>α测试是指软件开发公司组织内部人员模拟各类用户对即将面市的软件产品（称为α版本）进行测试，
试图发现错误并改正。α测试的关键在于尽可能的逼真地模拟实际运行环境和用户对软件产品的操作
并尽最大的努力涵盖所有可能的用户操作方式。经过α测试调整的软件产品称为β版本。

β测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本，并要求用户报告异常情况、
提出批评意见。然后软件开发公司再对β版本进行改错和完善  
</code></pre>

<h4 id="3-易用性测试-7要素">3. 易用性测试 (7要素)</h4>

<pre><code>符合标准和规范、灵活性、正确性、直观性、舒适性、实用性、一致性
</code></pre>

<h2 id="第八章">第八章</h2>

<h4 id="软件本地化-国际化-了解">软件本地化、国际化(了解)</h4>

<pre><code>L10n（Localization）：本地化
I18n（Internationalization）：国际化
</code></pre>

<h2 id="第九章">第九章</h2>

<h4 id="1-自动化测试原理">1. 自动化测试原理</h4>

<pre><code>自动化测试是把人为驱动的测试行为转化为机器执行的一种过程，即模拟手工测试步骤，通过执行由程序语言编制的测试脚本，
自动地完成软件的单元测试、功能测试、负载测试或性能测试等全部工作
</code></pre>

<h4 id="2-自动化测试工具">2. 自动化测试工具</h4>

<pre><code>测试工具的分类及代表性工具的名称及应用场景。例：QTP, Selenium, xUnit, EMMA, Jmeter, LoadRunner,Appscan, Wirshark, SoapUI, Mantis, Bugzilla, JIRA等。
根据测试方法不同：分为白盒测试工具和黑盒测试工具，或者分为静态测试工具和动态测试工具等。
根据测试的对象和目的不同，分为单元测试工具，功能测试工具，负载测试工具或性能测试工具，管理测试工具等。
静态测试工具：Compuware公司的CodeReview，Telelogic公司的Logiscope软件，PR公司的PRQA软件。
动态测试工具：Compuware公司的DevPartner软件，IBM公司的Rational Purify系列。
CUG功能测试：QTP，WebKing，SilkTest
性能测试：LoadRunner，IBM rational performance tester
</code></pre>

<h4 id="3-自动化-优点-局限性">3. 自动化 优点、局限性</h4>

<p>自动化测试的优点：</p>

<pre><code>1、对回归测试更方便：进行回归测试，要测试系统的所有功能模块，周期较长的回归测试工作量大，测试比较频繁，适合自动化测试。由于测试的脚本和用例都是设计好的，测试期望的结果也可以预料，将回归测试自动化可以极大的提高效率缩短回归时间。
2、模拟真实情况：可以执行手工测试无法执行的测试，比如同时并发上千用户测试系统的负载量，测试人员无法达到测试目的，而使用自动化测试工具可以模拟多用户的并发过程。
3、有效的利用人力物力资源：频繁地机器化的动作可以用自动化测试执行，减少错误的发生，更好的利用人力资源。
4、测试的重复利用：由于自动测试通常使用的是自动化脚本技术，这样就可以只需要做较少的甚至是不修改就可以实现在不同的测试过程中使用相同的用例。
5、减少人为的错误：自动化测试是机器完成，不存在执行过程中人为的疏忽和错误，测试设计完全决定了测试的质量，可以降低减少人为造成的错误。
</code></pre>

<p>自动化测试的缺点：</p>

<pre><code>1、自动化测试是工具执行，没有思维，无法进行主观判断，对界面色彩、布局和系统的奔溃现象无法发现，这些错误通过人眼很容易发现。
2、自动化测试工具本身是一个产品，在不同的系统平台或硬件平台可能会受影响，在运行时可能影响被测程序的测试结果。
3、对于需求更改频繁的软件，测试脚本的维护和设计比较空难。
4、自动化测试是机器执行，发现的问题比手工测试要少很多，通过测试工具没有发现缺陷，并不能说明系统不存在缺陷，只能通过工具评判测试结果和预期效果之间的差距。
5、自动化测试要编写测试脚本，设计场景，这些对测试人员的要求比较高，测试的设计直接影响测试的结果。
</code></pre>

<h2 id="第十章-有个在综合题">第十章（有个在综合题)</h2>

<h4 id="测试计划所涉及到的工作">测试计划所涉及到的工作：</h4>

<pre><code>1、测试目标和测试范围的确定，包括具体测试项及其优先级；
2、识别测试风险，并采取相对应的测试策略，包括测试方法的工具选择；
3、测试工作量估计，测试资源分配；
4、测试阶段划分，里程碑定义和进度表编制；
5、最终交付内容；
</code></pre>

<p>测试的设计方法不会单独存在，具体到每个项目会用多种方法。实际测试中，往往要综合使用多种方法才能提高测试效率和覆盖度。</p>

<pre><code>任何情况使用边界值分析法；
必要时用等价类划分；
使用错误推测法追加测试用例；
对照程序逻辑，检查用例的逻辑覆盖程度；
如果含有输入条件的组合，选用因果图法、判定表驱动法；
对于业务流清晰的系统，可以利用场景法贯穿整个测试过程，综合使用各种测试方法
</code></pre>

<p>测试工作量：</p>

<pre><code>w = W0*R1+W0*R2+W0*R3
</code></pre>

<h2 id="第十一章">第十一章</h2>

<h4 id="1-测试用例的定义">1. 测试用例的定义</h4>

<pre><code>有效地发现软件缺陷的最小测试执行单元，是为了特定目的而设计的测试数据及与之相关的测试规程的一个特定的集合
</code></pre>

<h4 id="2-重要性-作用">2. 重要性&mdash;&gt;作用</h4>

<pre><code>有效性：测试用例是测试人员测试过程中的重要参考依据；
易组织性：上千个测试用例需要通过计划来组织好，以便有效的使用和审查；
可复用性：实际测试中很多测试是重复进行的，有测试用例计划才能方便进行重复测试；
可评估性：测试用例的通过率是检验代码质量的保证，量化的标准是测试用例的通过率及软件缺陷的数目； 
可管理性：作为检验测试进度的工具之一
</code></pre>

<h2 id="第十二章">第十二章</h2>

<h4 id="1-测试环境的分类">1. 测试环境的分类</h4>

<pre><code>设计环境、实施环境、管理环境
</code></pre>

<h4 id="2-测试环境的五要素">2. 测试环境的五要素</h4>

<pre><code>硬件、软件、网络环境、数据准备、测试工具
</code></pre>

<h2 id="第十三章">第十三章</h2>

<h4 id="1-bug-定义">1. bug 定义</h4>

<pre><code>bug就是一个电脑程序里的错误，而现在更是将其延生为漏洞，或者是一个程序不完善的地方
</code></pre>

<h4 id="2-bug-生命周期">2. bug 生命周期</h4>

<pre><code>简单流程：发现---&gt;打开---&gt;修复---&gt;关闭
具体流程：发现bug--&gt;提交bug--&gt;指派bug--&gt;研发确认bug--&gt;研发去修复bug--&gt;回归验证bug--&gt;是否通过验证--&gt;关闭bug
</code></pre>

<h4 id="3-bug-等级">3. bug 等级</h4>

<p>1）致命错误：</p>

<pre><code>常规操作引起的系统崩溃、死机、死循环
造成数据泄露的安全性问题，比如恶意攻击造成的账户私密信息泄露
设计金钱的计算
</code></pre>

<p>2）严重错误：</p>

<pre><code> 重要功能不能实现
 错误的波及面广，影响到其他重要的正常功能实现，功能交互
 非常规操作导致的程序崩溃、死机、死循环
 外观难以接受的缺陷
 密码文明显示，（界面+数据） 前提：眼睛
</code></pre>

<p>3）一般错误</p>

<pre><code>次要功能不能正常实现
操作界面错误（包括数据窗口内列名定义，含义不一致）
查询错误，数据错误显示
简单的输入限制为放在前段进行控制（格式限制）
删除操作为未给出提示，误删
</code></pre>

<p>4）细微错误</p>

<pre><code>界面不规范
辅助说明描述不清楚
提示窗口文字未采用行业术语
界面存在文字错误
</code></pre>

<h4 id="4-bug测试与调试">4. bug测试与调试</h4>

<h4 id="5-bug-趋势">5. bug 趋势</h4>

<pre><code>在一个成熟的软件开发过程中、缺陷趋势会遵守着一种和预测比较接近的模式向前发展。
在生命周期的初期，缺陷率增长很快。在达到顶峰后，就会随着实际以较慢的速率下降。
</code></pre>

                        </div>
						 
                        
<div class="post-archive">
    <ul class="post-copyright">
        <li><strong>原文作者：</strong><a rel="author" href="http://linxianqin.gitee.io">林贤钦</a></li>
        <li style="word-break:break-all"><strong>原文链接：</strong><a href="http://linxianqin.gitee.io/post/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E8%80%83%E8%AF%95%E6%9C%9F%E6%9C%AB%E5%A4%8D%E4%B9%A0/">http://linxianqin.gitee.io/post/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E8%80%83%E8%AF%95%E6%9C%9F%E6%9C%AB%E5%A4%8D%E4%B9%A0/</a></li>
        <li><strong>版权声明：</strong>本作品采用<a rel="license" href="https://linxianqin.gitee.io">知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议</a>进行许可，非商业转载请注明出处（作者，原文链接），商业转载请联系作者获得授权。</li>
    </ul>
</div>
<br/>



                        

<div class="post-archive">
    <h2>See Also</h2>
    <ul class="listing">
        
        <li><a href="/post/%E7%94%B5%E5%95%86%E7%AE%A1%E7%90%86%E5%90%8E%E5%8F%B0-API-%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/">电商管理后台 API 接口文档</a></li>
        
        <li><a href="/post/Mybatis%E5%88%86%E9%A1%B5%E6%8F%92%E4%BB%B6PageHelper/">Mybatis分页插件PageHelper</a></li>
        
        <li><a href="/post/Restful%E7%BB%9F%E4%B8%80Json%E5%B7%A5%E5%85%B7%E7%B1%BB%E5%B8%A6%E5%88%86%E9%A1%B5%E4%BF%A1%E6%81%AF/">Restful统一Json工具类，带分页信息</a></li>
        
        <li><a href="/post/hugo%E6%9B%B4%E6%96%B0%E5%8D%9A%E5%AE%A2%E5%90%8E%E9%83%A8%E7%BD%B2%E7%A0%81%E4%BA%91gitee/">Hugo更新博客后部署码云gitee</a></li>
        
        <li><a href="/post/hugo-%E6%9B%B4%E6%8D%A2%E7%BD%91%E7%AB%99%E5%9B%BE%E6%A0%87/">Hugo更换网站图标</a></li>
        
    </ul>
</div>


                        <div class="post-meta meta-tags">
                            
                            <ul class="clearfix">
                                
                                <li><a href="http://linxianqin.gitee.io/tags/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95">软件测试</a></li>
                                
                            </ul>
                            
                        </div>
                    </article>
                    
    

    
    
    <div class="post bg-white">
      <script src="https://utteranc.es/client.js"
            repo= "757610938/hugo-blogs-utterances"
            issue-term="pathname"
            theme="github-light"
            crossorigin="anonymous"
            async>
      </script>
    </div>
    
                </div>
            </div>
            <div id="secondary">
    <section class="widget">
        <form id="search" action="//www.google.com/search" method="get" accept-charset="utf-8" target="_blank" _lpchecked="1">
      
      <input type="text" name="q" maxlength="20" placeholder="Search">
      <input type="hidden" name="sitesearch" value="http://linxianqin.gitee.io">
      <button type="submit" class="submit icon-search"></button>
</form>
    </section>
    
    <section class="widget">
        <h3 class="widget-title">最近文章</h3>
<ul class="widget-list">
    
    <li>
        <a href="http://linxianqin.gitee.io/post/java-%E5%8F%8D%E5%B0%84/" title="Java 反射">Java 反射</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/java-%E9%93%BE%E8%A1%A8/" title="Java 链表">Java 链表</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E7%9F%AD%E4%BF%A1%E6%B3%A8%E5%86%8C%E5%92%8C%E5%BE%AE%E4%BF%A1%E7%99%BB%E5%BD%95%E7%9A%84%E5%AE%9E%E7%8E%B0/" title="短信注册和微信登录的实现">短信注册和微信登录的实现</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/OAuth2.0%E8%AE%A4%E8%AF%81%E6%8E%88%E6%9D%83%E5%8D%95%E7%82%B9%E7%99%BB%E5%BD%95/" title="OAuth2.0认证授权单点登录">OAuth2.0认证授权单点登录</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/Nacos%E6%9C%8D%E5%8A%A1%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83/" title="Nacos服务注册中心">Nacos服务注册中心</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/SpringCloud%E5%BE%AE%E6%9C%8D%E5%8A%A1/" title="SpringCloud微服务">SpringCloud微服务</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E9%98%BF%E9%87%8C%E4%BA%91%E8%A7%86%E9%A2%91%E7%82%B9%E6%92%AD%E6%9C%8D%E5%8A%A1/" title="阿里云视频点播服务前后端实现">阿里云视频点播服务前后端实现</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E9%98%9F%E5%88%97/" title="队列">队列</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E7%A8%80%E7%96%8F%E6%95%B0%E7%BB%84/" title="稀疏数组">稀疏数组</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E9%98%BF%E9%87%8C%E4%BA%91EasyExcel%E5%AE%9E%E7%8E%B0%E5%90%8E%E7%AB%AF%E5%AF%B9Excel%E7%9A%84%E8%AF%BB%E5%86%99%E6%93%8D%E4%BD%9C/" title="使用阿里云EasyExcel实现后端对Excel的读写操作">使用阿里云EasyExcel实现后端对Excel的读写操作</a>
    </li>
    
</ul>
    </section>

    

    <section class="widget">
        <h3 class="widget-title">分类</h3>
<ul class="widget-list">
    
    <li><a href="http://linxianqin.gitee.io/categories/JWT/">JWT (2)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/hugo/">hugo (2)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/java/">java (18)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/java8/">java8 (1)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/springCloud/">springCloud (2)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/springSecurity/">springSecurity (4)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/vue/">vue (5)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/yml/">yml (1)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/">数据结构 (3)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/">软件测试 (1)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/%E9%98%BF%E9%87%8C%E4%BA%91/">阿里云 (4)</a></li>
    
</ul>
    </section>

    <section class="widget">
        <h3 class="widget-title">标签</h3>
<div class="tagcloud">
    
    <a href="http://linxianqin.gitee.io/tags/JWT/">JWT</a>
    
    <a href="http://linxianqin.gitee.io/tags/hugo/">hugo</a>
    
    <a href="http://linxianqin.gitee.io/tags/java/">java</a>
    
    <a href="http://linxianqin.gitee.io/tags/java8/">java8</a>
    
    <a href="http://linxianqin.gitee.io/tags/spring/">spring</a>
    
    <a href="http://linxianqin.gitee.io/tags/springBoot/">springBoot</a>
    
    <a href="http://linxianqin.gitee.io/tags/springCloud/">springCloud</a>
    
    <a href="http://linxianqin.gitee.io/tags/ssm/">ssm</a>
    
    <a href="http://linxianqin.gitee.io/tags/vue/">vue</a>
    
    <a href="http://linxianqin.gitee.io/tags/yml/">yml</a>
    
    <a href="http://linxianqin.gitee.io/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/">数据结构</a>
    
    <a href="http://linxianqin.gitee.io/tags/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/">软件测试</a>
    
    <a href="http://linxianqin.gitee.io/tags/%E9%98%BF%E9%87%8C%E4%BA%91/">阿里云</a>
    
</div>
    </section>

    
<section class="widget">
    <h3 class="widget-title">友情链接</h3>
    <ul class="widget-list">
        
        <li>
            <a target="_blank" href="https://www.cnki.net" title="中国知网">中国知网</a>
        </li>
        
        <li>
            <a target="_blank" href="https://linxianqin.com" title="个人的另一个博客网站(国内加载慢)">个人的另一个博客网站(国内加载慢)</a>
        </li>
        
    </ul>
</section>


    <section class="widget">
        <h3 class="widget-title">其它</h3>
        <ul class="widget-list">
            <li><a href="http://linxianqin.gitee.io/index.xml">文章 RSS</a></li>
        </ul>
    </section>
</div>
        </div>
    </div>
</div>
<footer id="footer">
    <div class="container">
        &copy; 2020 <a href="http://linxianqin.gitee.io">林贤钦 By 林贤钦</a>.
        Powered by <a rel="nofollow noreferer noopener" href="https://gohugo.io" target="_blank">Hugo</a>.
        <a href="https://www.flysnow.org/" target="_blank">Theme</a> based on <a href="https://github.com/rujews/maupassant-hugo" target="_blank">maupassant</a>.
        
    </div>
</footer>


    
    <script type="text/javascript">
        
        (function () {
            $("pre code").parent().addClass("line-numbers")
        }());

        window.MathJax = {
            tex2jax: {
                inlineMath: [['$', '$']],
                processEscapes: true
                }
            };
    </script>
    <script type="text/javascript" src="/js/prism.js" async="true"></script>
    <script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML' async></script>


<a id="rocket" href="#top"></a>
<script type="text/javascript" src="/js/totop.js?v=0.0.0" async=""></script>

<script type="application/javascript">
var doNotTrack = false;
if (!doNotTrack) {
	window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
	ga('create', 'GA ID', 'auto');
	
	ga('send', 'pageview');
}
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>



    <script type="text/javascript" src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" async></script>




</body>
</html>
